package com.woniu.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniu.entity.AllUser;
import org.springframework.http.codec.multipart.FilePart;
import org.springframework.stereotype.Service;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

/**
 * @Author pml
 * @Date 2025/6/12 10:52
 * @Description TODO
 * AllUserService接口
 * 继承IService获取MyBatis-Plus提供的CRUD基础方法
 * 同时定义业务所需的扩展方法
 **/
@Service
public interface AllUserService extends IService<AllUser> {

    List<AllUser> listByIds(Collection<? extends Serializable> userIds);

    /**
     * 搜索用户
     * 单独定义此方法而非直接使用IService的list方法，因为需要自定义查询条件
     * @param keyword 搜索关键词
     * @return 查询结果
     */
    QueryWrapper<AllUser> createSearchQueryWrapper(String keyword);

    /**
     * 根据用户ID获取角色ID
     * SaToken鉴权时需要获取用户角色，因此添加此方法
     * 角色信息是权限控制的基础，通过用户ID关联查询
     * @param userId 用户ID
     * @return 角色ID，若用户不存在则返回null
     */
    Integer getRoleIdByUserId(Integer userId);

    /**
     * 软删除用户
     * 新增此方法用于实现逻辑删除，与物理删除区分
     * @param id 用户ID
     * @return 是否删除成功
     */
    boolean softDeleteById(Integer id);

    String uploadAvatar(Integer id, FilePart filePart);
    //查电话号码是否存在
    AllUser findByPhoneNumber(String contact);
    //通过电话获取LoginDTO（账号userName和password和rememberMe）
}
